package com.xingkeduo.service.api.marketing;

import com.xingkeduo.model.param.MarketingParam;
import com.xingkeduo.model.param.MarketingReceiveHistoryParam;
import com.xingkeduo.model.param.VerifyReedRedeemCodeParam;
import com.xingkeduo.model.po.TMarketing;
import com.xingkeduo.util.tool.ResponseMessage;

/**
 * 
* @ClassName: CouponService
* @Description: 用户领取记录-c端业务
* @author lixin
* @date Apr 30, 2019 1:51:54 PM
*
 */
public interface ReceiveService {
	/**
	 * 
	* @Title: queryCouponDetailById
	* @Description: 根据券模版ID获取券详情
	* @param @param MarketingReceiveHistoryParam
	* userId
	* marketingType
	* status
	* @param @return    设定文件 
	* @return ResponseMessage    返回类型 
	* @throws 
	* @author lixin
	* @date Apr 30, 2019 2:01:04 PM
	 */

	ResponseMessage queryMarketingDetailById(MarketingParam marketingParam);
	/**
	 * 
	* @Title: queryMarketingDetailNoCheckById 
	* @Description: 查询券信息-不校验券使用规则
	* @param @param param
	* @param @return    设定文件 
	* @return ResponseMessage    返回类型 
	* @throws 
	* @author lixin
	* @date Jul 19, 2019 5:34:12 PM
	 */
	ResponseMessage queryMarketingDetailNoCheckById(MarketingParam param);
	/**
	 * 
	* @Title: bindReceiveAccount 
	* @Description: 绑定账号信息-添加领取记录
	* @param @param marketingReceiveHistoryParam
	* @param @return    设定文件 
	* @return ResponseMessage    返回类型 
	* @throws 
	* @author lixin
	* @date May 2, 2019 9:01:04 PM
	 */
	ResponseMessage bindReceiveAccount(MarketingReceiveHistoryParam marketingReceiveHistoryParam);
	/**
	 * 
	* @Title: bindBagReceiveAccount 
	* @Description: 兑换码领取 
	* @param @param code
	* @param @param userId
	* @param @return    设定文件 
	* @return ResponseMessage    返回类型 
	* @throws 
	* @author lixin
	* @date May 3, 2019 11:55:49 AM
	 */
	ResponseMessage bindBagReceiveAccount(String code, Long userId);
	/**
	 * 
	* @Title: queryCouponBagDetailById 
	* @Description:	查询券包详情
	* @param @param marketingReceiveHistoryParam
	* @param @return    设定文件 
	* @return ResponseMessage    返回类型 
	* @throws 
	* @author lixin
	* @date May 7, 2019 2:30:35 PM
	 */
	ResponseMessage queryCouponBagDetailById(MarketingParam marketingParam);
	
	/**
	 * 
	* @Title: bindBagReceiveAccount 
	* @Description: 券包领取-通过券包id领取
	* @param @param marketingParamId
	* @param @param userId
	* @param @return    设定文件 
	* @return ResponseMessage    返回类型 
	* @throws 
	* @author lixin
	* @date May 7, 2019 2:51:16 PM
	 */
	ResponseMessage bindBagReceiveAccount(MarketingReceiveHistoryParam marketingReceiveHistoryParam);
	/**
	 * 
	* @Title: saveUserPurchaseRecord 
	* @Description: 生成第三方核销记录 
	* @param @param verifyReedRedeemCodeParam
	* @param @return    设定文件 
	* @return ResponseMessage    返回类型 
	* @throws 
	* @author lixin
	* @date May 17, 2019 2:18:11 PM
	 */
	ResponseMessage saveUserPurchaseRecord(VerifyReedRedeemCodeParam verifyReedRedeemCodeParam);
	/**
	 * 
	* @Title: bindUserPurchaseRedeemCode 
	* @Description: 核销记录构建领取信息 
	* @param @param redeemCodeId
	* @param @param marketingId
	* @param @return    设定文件 
	* @return ResponseMessage    返回类型 
	 * @throws Exception 
	* @throws 
	* @author lixin
	* @date May 17, 2019 5:17:25 PM
	 */
	ResponseMessage bindUserPurchaseRedeemCode(String redeemCodeId, String marketingId) throws Exception;
	/**
	 * 
	* @Title: queryMarketingBagByRedeemCode 
	* @Description: 根据兑换码查询券信息 
	* @param @param code
	* @param @return    设定文件 
	* @return ResponseMessage    返回类型 
	* @throws 
	* @author lixin
	* @date May 21, 2019 10:31:24 AM
	 */
	ResponseMessage queryMarketingBagByRedeemCode(String code);
	
	ResponseMessage queryMarketingBagSurplusQuantityByItemId(String itemId);
	/**
	 * 
	* @Title: bindBatchReceiveAccount 
	* @Description: 领取多张券，卡 
	* @param @param userId
	* @param @param marketingBatchRelease
	* @param @return    设定文件 
	* @return ResponseMessage    返回类型 
	* @throws 
	* @author lixin
	* @date May 24, 2019 6:44:57 PM
	 */
	ResponseMessage bindBatchReceiveAccount(Long userId, String marketingBatchRelease);
	/**
	 * 
	* @Title: queryCouponBagDetailByItemId 
	* @Description: 根据套餐id查询优惠包是否可用 
	* @param @param marketingParam
	* @param @return    设定文件 
	* @return ResponseMessage    返回类型 
	* @throws 
	* @author lixin
	* @date Jun 20, 2019 12:55:58 PM
	 */
	ResponseMessage queryCouponBagDetailByItemId(MarketingParam marketingParam);
	/**
	 * 
	* @Title: delayCompensateBindReceiveAccount 
	* @Description: 超时补偿 
	* @param @param marketingReceiveHistoryParam
	* @param @return    设定文件 
	* @return ResponseMessage    返回类型 
	* @throws 
	* @author lixin
	* @date Jul 10, 2019 5:21:37 PM
	 */
	ResponseMessage delayCompensateBindReceiveAccount(MarketingReceiveHistoryParam marketingReceiveHistoryParam);
	/**
	 * 
	* @Title: bindReceiveAccountOfHairdresserGive 
	* @Description: 发型师发券 
	* @param @param marketingReceiveHistoryParam
	* @param @return    设定文件 
	* @return ResponseMessage    返回类型 
	* @throws 
	* @author lixin
	* @date Jul 10, 2019 8:21:57 PM
	 */
	ResponseMessage bindReceiveAccountOfHairdresserGive(MarketingReceiveHistoryParam marketingReceiveHistoryParam);
	/**
	 * 
	* @Title: bindReceiveAccountOfShareNewUser 
	* @Description: C拉C新用户领取
	* @param @param marketingReceiveHistoryParam
	* @param @return    设定文件 
	* @return ResponseMessage    返回类型 
	* @throws 
	* @author lixin
	* @date Jul 10, 2019 8:32:45 PM
	 */
	ResponseMessage bindReceiveAccountOfShareNewUser(MarketingReceiveHistoryParam marketingReceiveHistoryParam);
	/**
	 * 
	* @Title: bindReceiveAccountOfShareOldUser 
	* @Description: C拉C老用户下单奖励
	* @param @param marketingReceiveHistoryParam
	* @param @return    设定文件 
	* @return ResponseMessage    返回类型 
	* @throws 
	* @author lixin
	* @date Jul 10, 2019 8:33:17 PM
	 */
	ResponseMessage bindReceiveAccountOfShareOldUser(MarketingReceiveHistoryParam marketingReceiveHistoryParam);
	/**
	 * 
	* @Title: queryMarketingByHairdresserGive 
	* @Description: 获取运营营销数据
	* @param @return    设定文件 
	* @return ResponseMessage    返回类型 
	* @throws 
	* @author lixin
	* @date Jul 11, 2019 11:05:57 AM
	 */
	ResponseMessage queryMarketingByHairdresserGive();
	/**
	 * 
	* @Title: bindBarberReceiveAccount 
	* @Description: barber下单奖励
	* @param @param userId
	* @param @return    设定文件 
	* @return ResponseMessage    返回类型 
	* @throws 
	* @author lixin
	* @date Jul 11, 2019 9:35:16 PM
	 */
	ResponseMessage bindBarberReceiveAccount(Long userId, String hairType);
	/**
	 * 
	* @Title: checkUserHasBarberCoupon 
	* @Description: 查询账户内是否有奖励券
	* @param @param userId
	* @param @param hairType
	* @param @return    设定文件 
	* @return ResponseMessage    返回类型 
	* @throws 
	* @author lixin
	* @date Aug 1, 2019 8:11:57 PM
	 */
	ResponseMessage checkUserHasBarberCoupon(Long userId, String hairType);
	
}
